package cn.lili.modules.kit.plugin.wechat.model;

import com.google.gson.annotations.SerializedName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class TransactionsRequest {

    /**
     * 【应用ID】 由微信生成的应用ID，全局唯一。请求基础下单接口时请注意AppID的应用属性，例如公众号场景下，需使用应用属性为公众号的AppID
     * */
    @SerializedName(value = "appid")
    private String appid;

    /**
     * 直连商户号】 直连商户的商户号，由微信支付生成并下发。
     * */
    @SerializedName(value = "mchid")
    private String mchid;

    /**
     * 【商品描述】 商品描述
     * */
    @SerializedName(value = "description")
    private String description;

    /**
     * 【商户订单号】 商户系统内部订单号，只能是数字、大小写字母_-*且在同一个商户号下唯一
     * */
    @SerializedName(value = "out_trade_no")
    private String outTradeNo;

    /**
     * 【附加数据】 附加数据
     */
    @SerializedName(value = "attach")
    private String attach;

    /**
     * 【通知地址】 异步接收微信支付结果通知的回调地址，通知URL必须为外网可访问的URL，不能携带参数。 公网域名必须为HTTPS，如果是走专线接入，使用专线NAT IP或者私有回调域名可使用HTTP
     * */
    @SerializedName(value = "notify_url")
    private String notifyUrl;

    /**
     * 【订单金额】 订单金额
     * */
    @SerializedName(value = "amount")
    private PartnerTransactionsRequest.Amount amount;

    /**
     * 【场景信息】 场景信息
     * */
    @SerializedName(value = "scene_info")
    private PartnerTransactionsRequest.SceneInfo sceneInfo;

    /**
     * <pre>
     * 字段名：支付者
     * 变量名：payer
     * 是否必填：是（仅JSAPI支付必传）
     * 类型：object
     * 描述：
     *  支付者信息
     * </pre>
     */
    @SerializedName(value = "payer")
    private PartnerTransactionsRequest.Payer payer;
}
